package com.zy.je.common.mybatis.ext.model;

import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zy.je.common.core.utils.CheckUtil;
import com.zy.je.common.mybatis.ext.util.WrapperUtil;

import java.util.List;

/**
 * 分页查询
 *
 * @author zy
 */
public interface IPageQuery {
    /**
     * 构建分页参数
     *
     * @param <T>
     * @return
     */
    default <T> Page<T> buildPage() {
        int tmpPageNo = getPageNo() == null ? 1 : getPageNo();
        int tmpPageSize = getPageSize() == null ? 10 : getPageSize();
        Page<T> page = new Page<>((long) tmpPageNo, (long) tmpPageSize);
        //处理排序
        List<OrderItem> orders = WrapperUtil.fmtOrderBy2OrderItems(buildOrderBy());
        if (!CheckUtil.isBlank(orders)) {
            page.setOrders(orders);
        }
        return page;
    }

    /**
     * 构建排序参数
     *
     * @return
     */
    String buildOrderBy();

//    /**
//     * 排序参数
//     *
//     * @return
//     */
//    String get_orderBy();

    /**
     * 页码
     *
     * @return
     */
    Integer getPageNo();

    /**
     * 分页大小
     *
     * @return
     */
    Integer getPageSize();
}
